public class Test4 {
    public static void main(String[] args) throws InterruptedException {
//        final Object o = new Object();
//        char[] aI = "1234567".toCharArray();
//        char[] aC = "ABCDEFG".toCharArray();
//
//        new Thread(() -> {
//            synchronized (o) {
//                for (char c : aI) {
//                    System.out.print(c);
//                    try {
//
//                        o.wait(); //让出锁
//                        o.notify();
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    }
//                }
//                o.notify(); //必须，否则无法终止程序
//            }
//        }, "t1").start();
//
//        new Thread(() -> {
//            synchronized (o) {
//                for (char c : aC) {
//                    System.out.print(c);
//                    try {
//                        o.notify();
//                        o.wait(); //让出锁
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    }
//                }
//                o.notify(); //必须，否则无法终止程序
//            }
//        }, "t2").start();
        test.a();
    }
}

class test {
    public static void a() throws InterruptedException {
        final Object o = new Object();
        char[] aI = "1234567".toCharArray();
        char[] aC = "ABCDEFG".toCharArray();

        Thread t1 = new Thread(() -> {
            synchronized (o) {
                for (char c : aI) {
                    System.out.print(c);
                    try {
                        o.notify();
                        o.wait(); //让出锁
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                o.notify(); //必须，否则无法终止程序
            }
        }, "t1");

        Thread t2 = new Thread(() -> {
            synchronized (o) {
                for (char c : aC) {
                    System.out.print(c);
                    try {
                        o.notify();
                        o.wait(); //让出锁
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                o.notify(); //必须，否则无法终止程序
            }
        }, "t2");


        t2.start();
        t1.start();
    }
}
